from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 主动技能(主动技能):
    六道 = True
    灼伤转换 = []
    灼伤倍率 = 0.25

    def 等效百分比(self, **argv):
        # 20%转化为灼伤,直伤和异常比为4:1
        for i in self.灼伤转换:
            if len(getattr(self, 'data{}'.format(str(i)), [])) > 0:
                setattr(self, '灼伤data{}'.format(str(i)), [
                        int(j*self.灼伤倍率) for j in getattr(self, 'data{}'.format(str(i)), [])])
                setattr(self, '灼伤hit{}'.format(str(i)),
                        getattr(self, 'hit{}'.format(str(i)), 0))
                setattr(self, '灼伤power{}'.format(str(i)),
                        getattr(self, 'power{}'.format(str(i)), 0))
        return super().等效百分比(**argv)


class 技能0(主动技能):
    名称 = '投掷苦无'
    所在等级 = 1
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [8, 91]
    data0 = [int(i) for i in [0, 331, 374, 418, 460, 504, 547, 590, 633, 677, 719, 763, 806, 849, 892, 936, 978, 1022, 1065, 1108, 1151, 1195, 1237, 1281, 1324, 1367, 1410, 1454, 1496, 1540, 1583, 1626, 1669, 1713, 1755,
                              1799, 1842, 1885, 1928, 1972, 2014, 2058, 2101, 2144, 2187, 2231, 2273, 2317, 2360, 2403, 2446, 2490, 2532, 2576, 2619, 2662, 2705, 2749, 2791, 2835, 2878, 2921, 2964, 3008, 3050, 3094, 3136, 3180, 3223, 3267, 3309]]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7
    CD = 1.8

    六道 = False


class 技能1(主动技能):
    名称 = '焰刃'
    所在等级 = 5
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [15, 168]
    data0 = [int(i) for i in [0, 571, 647, 721, 796, 870, 944, 1020, 1093, 1169, 1243, 1317, 1393, 1466, 1542, 1616, 1690, 1766, 1839, 1915, 1989, 2063, 2139, 2212, 2288, 2362, 2436, 2511, 2585, 2661, 2735, 2808, 2884, 2958,
                              3034, 3108, 3181, 3257, 3331, 3407, 3481, 3554, 3630, 3704, 3780, 3854, 3927, 4003, 4077, 4153, 4226, 4300, 4376, 4450, 4526, 4599, 4673, 4749, 4823, 4899, 4972, 5046, 5122, 5196, 5272, 5345, 5419, 5495, 5569, 5645, 5718]]
    hit0 = 2
    TP成长 = 0.1
    TP上限 = 7
    CD = 6.3

    六道 = False


class 技能2(主动技能):
    名称 = '火遁·豪火球之术'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [15, 150]

    data0 = [0, 109, 121, 131, 144, 154, 167, 177, 189, 199, 212, 221, 234, 245, 256, 265, 278, 288, 300, 311, 322, 333, 346, 356, 365, 378, 388, 400, 408, 422, 432, 444, 454, 467, 477,
             490, 500, 512, 522, 534, 544, 557, 567, 579, 587, 601, 612, 624, 633, 645, 655, 668, 679, 691, 700, 713, 723, 735, 746, 758, 767, 780, 791, 802, 814, 824, 834, 847, 858, 867, 879]
    hit0 = 12
    data1 = [0, 509, 553, 596, 641, 688, 732, 775, 819, 865, 910, 954, 998, 1043, 1088, 1133, 1177, 1222, 1266, 1309, 1355, 1400, 1445, 1488, 1533, 1579, 1624, 1667, 1712, 1755, 1802, 1845, 1890, 1935, 1981, 2025,
             2068, 2114, 2159, 2204, 2247, 2291, 2337, 2381, 2426, 2470, 2516, 2560, 2606, 2649, 2694, 2738, 2782, 2827, 2872, 2917, 2960, 3005, 3051, 3096, 3140, 3184, 3229, 3274, 3317, 3362, 3407, 3453, 3497, 3541, 3586]
    hit1 = 1

    灼伤转换 = [0, 1]
    TP成长 = 0.1
    TP上限 = 7
    CD = 7.5


class 技能3(被动技能):
    名称 = '忍术精通'
    所在等级 = 15
    等级上限 = 1
    基础等级 = 1
    关联技能 = ['无']
    冷却关联技能 = ['投掷苦无', '焰刃', '火遁·豪火球之术', '忍法：幻影手里剑', '火遁·飓风煞', '火遁·螺旋手里剑',
              '火遁·炎天道', '火遁·蟾蜍油炎弹', '火遁·炎舞天璇', '八岐大蛇', '火遁·风魔手里剑', '天照', '勾玉之火·镰鼬']

    def CD缩减倍率(self, 武器类型):
        return 0.8


# 25%转化为灼伤,基础攻击力-20%
class 技能4(主动技能):
    名称 = '忍法：幻影手里剑'
    备注 = '(结印打满40hit)'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [91, 910]

    data0 = [0, 156, 173, 188, 205, 221, 237, 252, 269, 284, 300, 317, 332, 347, 363, 380, 397, 411, 427, 443, 460, 475, 491, 506, 523, 540, 554, 570, 587, 603, 617, 634, 651, 666, 683, 697, 715,
             730, 746, 762, 779, 793, 809, 825, 840, 857, 873, 889, 905, 921, 936, 953, 968, 984, 1000, 1017, 1031, 1048, 1064, 1080, 1095, 1111, 1128, 1145, 1158, 1174, 1192, 1206, 1222, 1238, 1255]
    hit0 = 10
    data1 = [0, 156, 173, 188, 205, 221, 237, 252, 269, 284, 300, 317, 332, 347, 363, 380, 397, 411, 427, 443, 460, 475, 491, 506, 523, 540, 554, 570, 587, 603, 617, 634, 651, 666, 683, 697, 715,
             730, 746, 762, 779, 793, 809, 825, 840, 857, 873, 889, 905, 921, 936, 953, 968, 984, 1000, 1017, 1031, 1048, 1064, 1080, 1095, 1111, 1128, 1145, 1158, 1174, 1192, 1206, 1222, 1238, 1255]
    hit1 = 20
    data2 = [0, 156, 173, 188, 205, 221, 237, 252, 269, 284, 300, 317, 332, 347, 363, 380, 397, 411, 427, 443, 460, 475, 491, 506, 523, 540, 554, 570, 587, 603, 617, 634, 651, 666, 683, 697, 715,
             730, 746, 762, 779, 793, 809, 825, 840, 857, 873, 889, 905, 921, 936, 953, 968, 984, 1000, 1017, 1031, 1048, 1064, 1080, 1095, 1111, 1128, 1145, 1158, 1174, 1192, 1206, 1222, 1238, 1255]
    hit2 = 10

    灼伤转换 = [0, 1, 2]

    TP成长 = 0.1
    TP上限 = 7
    CD = 12.0


# 25%转化为灼伤,基础攻击力-20%
class 技能5(主动技能):
    名称 = '火遁·飓风煞'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [61, 610]

    data0 = [0, 111, 124, 135, 145, 158, 167, 179, 191, 202, 213, 225, 237, 246, 257, 270, 281, 293, 305, 314, 326, 338, 349, 360, 372, 382, 393, 405, 418, 428, 439, 450, 462, 473, 485,
             496, 506, 519, 530, 542, 553, 564, 575, 586, 599, 607, 621, 633, 643, 655, 665, 677, 689, 700, 712, 721, 733, 744, 756, 768, 780, 789, 800, 813, 824, 837, 846, 858, 868, 880, 893]
    hit0 = 25
    data1 = [0, 818, 901, 983, 1065, 1149, 1233, 1316, 1400, 1481, 1563, 1645, 1728, 1813, 1896, 1978, 2061, 2144, 2228, 2310, 2394, 2476, 2559, 2641, 2725, 2808, 2890, 2972, 3057, 3140, 3222, 3306, 3387, 3471, 3552,
             3637, 3720, 3803, 3886, 3968, 4051, 4136, 4219, 4302, 4383, 4466, 4549, 4632, 4715, 4799, 4881, 4963, 5046, 5130, 5213, 5298, 5379, 5462, 5544, 5627, 5711, 5793, 5876, 5959, 6043, 6126, 6209, 6290, 6374, 6455, 6539]
    hit1 = 1

    灼伤转换 = [0, 1]

    TP成长 = 0.1
    TP上限 = 7
    CD = 17


class 技能6(被动技能):
    名称 = '苦无精通'
    所在等级 = 25
    等级上限 = 20
    基础等级 = 10

    def 魔法攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.23 + 0.01 * self.等级, 5)


class 技能7(被动技能):
    名称 = '烈焰印记'
    所在等级 = 25
    等级上限 = 20
    基础等级 = 10

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.3 + 0.01 * self.等级, 5)


# 25%转化为灼伤,基础攻击力-20% youwenti
class 技能8(主动技能):
    名称 = '火遁·螺旋手里剑'
    备注 = '地面/空中'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [91, 910]
    data0 = [0, 174, 191, 208, 225, 243, 261, 279, 296, 315, 331, 349, 366, 384, 402, 420, 436, 455, 473, 490, 508, 526, 542, 561, 577, 596, 614, 629, 648, 665, 683, 702, 718, 735, 753, 770, 789,
             806, 824, 841, 859, 876, 895, 912, 930, 947, 963, 982, 1000, 1017, 1036, 1051, 1070, 1088, 1104, 1123, 1141, 1157, 1175, 1192, 1210, 1229, 1245, 1263, 1281, 1299, 1316, 1334, 1350, 1369, 1386]
    hit0 = 15
    data1 = [0, 715, 788, 859, 932, 1005, 1078, 1150, 1223, 1294, 1368, 1441, 1512, 1585, 1658, 1730, 1802, 1876, 1948, 2019, 2093, 2166, 2238, 2310, 2383, 2455, 2527, 2600, 2673, 2746, 2817, 2890, 2964, 3035, 3107,
             3181, 3253, 3324, 3398, 3471, 3542, 3615, 3689, 3762, 3833, 3905, 3979, 4050, 4123, 4197, 4269, 4340, 4413, 4487, 4558, 4631, 4703, 4776, 4848, 4921, 4994, 5067, 5138, 5210, 5285, 5356, 5428, 5501, 5573, 5645, 5719]
    hit1 = 1

    灼伤转换 = [0, 1]

    TP成长 = 0
    TP上限 = 7
    CD = 12.0

    def 等效百分比(self, **argv):
        if self.TP等级 == 0:
            self.hit0 = 15
            self.hit1 = 1
        else:
            self.hit0 = 15 - self.TP等级*2-1
            self.power1 = self.TP等级 + 1

        return super().等效百分比(**argv)


class 技能9(主动技能):
    名称 = '忍法：残影术'
    所在等级 = 35
    等级上限 = 11
    基础等级 = 1
    是否有伤害 = 0
    MP = [128, 1280]
    关联技能 = ['投掷苦无', '焰刃', '火遁·豪火球之术', '忍法：幻影手里剑', '火遁·飓风煞', '火遁·螺旋手里剑', '忍法：替身术', '火遁·炎天道', '火遁·蟾蜍油炎弹', '火遁·炎舞天璇', '火遁·冥炎业火阵', '八岐大蛇',
            '火遁·风魔手里剑', '忍法：飞燕手里剑', '天照', '勾玉之火·镰鼬', '火炎灼空：草雉剑', '火源限界·八咫乌']
    额外倍率 = 0

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(0.98 + 0.02 * self.等级, 5)

    def 六道倍率(self):
        if self.等级 == 0:
            return 1.0
        else:
            return round(0.98 + 0.02 * self.等级 + self.额外倍率, 5)/round(0.98 + 0.02 * self.等级, 5)


class 技能10(主动技能):
    名称 = '忍法：替身术'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [91, 910]

    data0 = [0, 2624, 3043, 3461, 3880, 4298, 4714, 5133, 5552, 5974, 6388, 6809, 7227, 7645, 8063, 8483, 8900, 9318, 9737, 10154, 10574, 10991, 11409, 11830, 12248, 12666, 13084, 13502, 13921, 14340, 14758, 15174, 15593, 16012, 16430, 16848, 17270,
             17686, 18105, 18524, 18941, 19358, 19777, 20195, 20614, 21033, 21449, 21869, 22289, 22705, 23126, 23544, 23960, 24379, 24799, 25214, 25634, 26053, 26470, 26890, 27308, 27723, 28145, 28565, 28981, 29400, 29818, 30237, 30655, 31074, 31493]
    hit0 = 1
    data1 = [0, 1574, 1826, 2077, 2329, 2579, 2832, 3079, 3331, 3585, 3832, 4085, 4336, 4587, 4838, 5087, 5339, 5593, 5843, 6093, 6344, 6595, 6848, 7097, 7350, 7597, 7849, 8103, 8351, 8603, 8853, 9106, 9357, 9608, 9859, 10108, 10360, 10613,
             10862, 11114, 11365, 11615, 11868, 12118, 12370, 12618, 12869, 13122, 13372, 13624, 13873, 14126, 14378, 14626, 14879, 15129, 15381, 15632, 15883, 16133, 16385, 16637, 16889, 17137, 17388, 17643, 17890, 18143, 18391, 18644, 18896]
    hit1 = 1
    data2 = [0, 6929, 8032, 9137, 10242, 11347, 12451, 13556, 14660, 15766, 16869, 17973, 19079, 20179, 21289, 22389, 23497, 24599, 25708, 26810, 27912, 29020, 30121, 31231, 32331, 33437, 34541, 35643, 36751, 37853, 38961, 40062, 41166, 42272, 43376,
             44480, 45584, 46689, 47794, 48898, 50003, 51108, 52211, 53318, 54420, 55526, 56631, 57736, 58840, 59943, 61050, 62153, 63260, 64362, 65466, 66572, 67675, 68781, 69885, 70991, 72095, 73196, 74304, 75406, 76514, 77614, 78720, 79825, 80930, 82033, 83138]
    hit2 = 1

    TP成长 = 0.10
    TP上限 = 5
    CD = 25

    六道 = False


class 技能11(主动技能):
    名称 = '火遁·炎天道'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 238, 260, 288, 308, 332, 356, 381, 406, 429, 454, 476, 504, 526, 550, 572, 598, 623, 645, 672, 694, 719, 742, 767, 792, 815, 841, 862, 889, 911, 936, 958, 981, 1007, 1031, 1055, 1078, 1104,
             1127, 1152, 1176, 1200, 1225, 1246, 1273, 1295, 1319, 1344, 1367, 1392, 1416, 1440, 1464, 1490, 1513, 1538, 1562, 1586, 1611, 1633, 1658, 1679, 1708, 1729, 1753, 1777, 1802, 1826, 1848, 1873, 1897]
    hit0 = 1
    data1 = [0, 712, 783, 857, 927, 999, 1073, 1146, 1218, 1291, 1362, 1434, 1505, 1578, 1649, 1723, 1794, 1867, 1940, 2011, 2084, 2157, 2226, 2299, 2372, 2445, 2517, 2591, 2661, 2732, 2806, 2878, 2950, 3022, 3093, 3166,
             3238, 3311, 3382, 3457, 3528, 3598, 3672, 3743, 3814, 3888, 3960, 4033, 4106, 4179, 4251, 4321, 4394, 4466, 4537, 4610, 4682, 4755, 4827, 4900, 4972, 5044, 5115, 5186, 5258, 5332, 5405, 5478, 5547, 5620, 5694]
    hit1 = 0
    data2 = [0, 473, 522, 570, 619, 667, 718, 765, 813, 858, 907, 955, 1005, 1052, 1101, 1148, 1196, 1245, 1292, 1340, 1388, 1439, 1487, 1536, 1580, 1630, 1678, 1725, 1772, 1822, 1870, 1919, 1966, 2016, 2063, 2110,
             2159, 2207, 2257, 2304, 2351, 2398, 2447, 2496, 2543, 2591, 2641, 2689, 2738, 2783, 2832, 2882, 2930, 2978, 3023, 3072, 3121, 3169, 3217, 3267, 3314, 3363, 3409, 3458, 3507, 3554, 3603, 3652, 3700, 3748, 3794]
    hit2 = 1
    data3 = [0, 4407, 4853, 5301, 5748, 6195, 6642, 7089, 7537, 7984, 8433, 8877, 9324, 9771, 10220, 10666, 11113, 11558, 12006, 12454, 12901, 13349, 13797, 14242, 14690, 15138, 15584, 16032, 16479, 16926, 17374, 17821, 18264, 18712, 19161, 19607,
             20054, 20502, 20949, 21395, 21843, 22289, 22736, 23185, 23630, 24078, 24526, 24973, 25421, 25867, 26314, 26761, 27210, 27655, 28102, 28547, 28994, 29444, 29889, 30338, 30786, 31231, 31679, 32126, 32573, 33020, 33466, 33914, 34361, 34807, 35254]
    hit3 = 1

    灼伤转换 = [0, 1, 2, 3]

    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    CD = 18

    MP = [128, 1280]
    无色消耗 = 1

    形态 = ["地面", "空中"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "地面":
            self.hit0 = 1
            self.hit1 = 0
            self.灼伤hit0 = 1
            self.灼伤hit1 = 0
        elif 形态 == "空中":
            self.hit0 = 0
            self.hit1 = 1
            self.灼伤hit0 = 0
            self.灼伤hit1 = 1

    def 装备护石(self, char):
        self.power3 = 1.08
        self.灼伤power3 = 1.08
        self.倍率 *= 1.18*1.0


class 技能12(主动技能):
    名称 = '火遁·蟾蜍油炎弹'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 201, 222, 241, 262, 282, 302, 323, 342, 364, 384, 404, 425, 445, 465, 485, 506, 526, 546, 567, 590, 607, 629, 651, 671, 690, 711, 732, 753, 771, 793, 815, 832, 854, 875, 895, 914, 935,
             956, 976, 996, 1016, 1036, 1057, 1077, 1097, 1119, 1138, 1158, 1179, 1198, 1220, 1241, 1262, 1284, 1303, 1323, 1344, 1362, 1385, 1405, 1426, 1445, 1466, 1487, 1507, 1527, 1548, 1568, 1588, 1608]
    hit0 = 3
    data1 = [0, 801, 884, 967, 1049, 1131, 1212, 1292, 1375, 1456, 1538, 1621, 1703, 1783, 1866, 1946, 2028, 2109, 2192, 2272, 2357, 2437, 2517, 2600, 2681, 2763, 2843, 2925, 3008, 3090, 3170, 3253, 3334, 3415, 3496,
             3579, 3661, 3743, 3825, 3906, 3986, 4068, 4150, 4230, 4315, 4395, 4476, 4559, 4640, 4721, 4802, 4883, 4967, 5048, 5130, 5211, 5293, 5375, 5456, 5536, 5621, 5702, 5784, 5865, 5947, 6027, 6108, 6189, 6272, 6354, 6436]
    hit1 = 1
    data2 = [0, 6436, 7088, 7743, 8395, 9050, 9702, 10354, 11008, 11660, 12313, 12967, 13621, 14271, 14924, 15578, 16229, 16883, 17535, 18187, 18842, 19494, 20149, 20801, 21453, 22107, 22760, 23412, 24067, 24720, 25371, 26025, 26678, 27331, 27984, 28638,
             29289, 29942, 30596, 31249, 31902, 32556, 33208, 33859, 34515, 35167, 35818, 36472, 37125, 37778, 38431, 39085, 39739, 40389, 41043, 41696, 42350, 43002, 43656, 44308, 44960, 45614, 46268, 46922, 47574, 48226, 48880, 49532, 50185, 50840, 51492]
    hit2 = 1

    灼伤转换 = [0, 1, 2]

    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    CD = 25.0

    MP = [164, 1640]
    无色消耗 = 1

    def 装备护石(self, char):
        self.power2 = 1.19
        self.倍率 = 1.14
        self.CDR *= 0.88


class 技能13(主动技能):
    名称 = '忍法：六道轮回'
    所在等级 = 40
    等级上限 = 11
    基础等级 = 1
    关联技能 = ['火遁·豪火球之术', '忍法：幻影手里剑', '火遁·飓风煞', '火遁·螺旋手里剑', '忍法：替身术',
            '火遁·炎天道', '火遁·蟾蜍油炎弹', '火遁·炎舞天璇', '八岐大蛇', '火遁·风魔手里剑', '天照', '勾玉之火·镰鼬']
    六道技能显示 = []
    六道 = False
    CD = 30
    是否有伤害 = 1

    自定义描述 = 1

    def 技能描述(self, 武器类型):
        temp = ''
        temp += "CD:" + str(self.CD)+"<br>"
        temp += '加成倍率:80%<br>'
        temp += '关联技能:'
        try:
            for i in range(len(self.六道技能显示) - 1):
                temp += self.六道技能显示[i] + ','
            temp += self.六道技能显示[len(self.六道技能显示) - 1]
        except:
            temp += '无'
        return temp

    def 加成倍率(self, 武器类型):
        return 1.0


class 技能14(主动技能):
    名称 = '火遁·炎舞天璇'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 464, 510, 559, 606, 651, 698, 743, 793, 840, 885, 933, 981, 1027, 1074, 1120, 1169, 1215, 1262, 1308, 1355, 1405, 1451, 1497, 1544, 1590, 1639, 1686, 1731, 1780, 1826, 1872, 1919, 1968, 2014, 2061,
             2106, 2155, 2201, 2249, 2297, 2343, 2391, 2436, 2484, 2531, 2578, 2625, 2673, 2718, 2766, 2812, 2861, 2907, 2954, 3001, 3047, 3094, 3143, 3190, 3236, 3282, 3329, 3378, 3424, 3471, 3518, 3565, 3611, 3658, 3707]
    hit0 = 8
    data1 = [0, 141, 153, 167, 182, 195, 209, 224, 238, 252, 267, 279, 295, 309, 321, 336, 351, 364, 378, 393, 407, 421, 435, 448, 464, 478, 489, 506, 520, 536, 549, 561, 578, 590, 606, 617,
             632, 646, 662, 675, 688, 704, 716, 732, 743, 760, 774, 786, 802, 815, 831, 843, 858, 872, 885, 900, 914, 928, 943, 958, 970, 985, 1000, 1014, 1027, 1042, 1056, 1070, 1085, 1097, 1113]
    hit1 = 25
    data2 = [0, 3823, 4211, 4597, 4984, 5372, 5760, 6147, 6535, 6923, 7310, 7697, 8086, 8475, 8863, 9248, 9637, 10023, 10413, 10800, 11188, 11575, 11963, 12350, 12740, 13126, 13514, 13901, 14288, 14677, 15064, 15453, 15840, 16227, 16613, 17001,
             17390, 17780, 18167, 18555, 18940, 19327, 19717, 20103, 20492, 20879, 21267, 21653, 22043, 22430, 22819, 23206, 23594, 23980, 24369, 24756, 25143, 25531, 25918, 26307, 26696, 27084, 27469, 27857, 28244, 28634, 29021, 29409, 29797, 30184, 30571]
    hit2 = 1

    灼伤转换 = [0, 1, 2]

    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    CD = 40

    MP = [311, 3110]
    无色消耗 = 2

    def 装备护石(self, char):
        self.hit0 = 3
        self.灼伤hit0 = 3
        self.power1 = 2.38
        self.灼伤power1 = 2.38
        self.CDR *= 0.9


class 技能15(被动技能):
    名称 = '暗炎残星'
    所在等级 = 45
    等级上限 = 11
    学习间隔 = 5
    等级精通 = 1

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.09 + 0.01 * self.等级, 5)


class 技能16(主动技能):
    名称 = '毕方之印'
    是否主动 = 0
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    CD = 1
    # 该部分待测试，持续部分固定，但爆炸的时间点还需研究
    # 火烙印 持续部分每2.5s一跳
    data0 = [0, 169, 196, 223, 250, 277, 304, 331, 358, 385, 412, 439, 466, 492, 519, 546, 573, 600, 627, 654, 681, 708, 735, 762, 789, 816, 843,
             870, 897, 924, 951, 978, 1005, 1031, 1058, 1085, 1112, 1139, 1166, 1193, 1220, 1247, 1274, 1301, 1328, 1355, 1382, 1409, 1436, 1463, 1490]
    hit0 = 0.4
    data1 = [0, 423, 490, 557, 625, 692, 760, 827, 894, 962, 1029, 1096, 1164, 1231, 1299, 1366, 1433, 1501, 1568, 1635, 1703, 1770, 1838, 1905, 1972, 2040,
             2107, 2174, 2242, 2309, 2377, 2444, 2511, 2579, 2646, 2713, 2781, 2848, 2916, 2983, 3050, 3118, 3185, 3252, 3320, 3387, 3455, 3522, 3589, 3657, 3724]
    hit1 = 1
    # 炎烙印 持续部分每0.5s一跳
    data2 = [0, 203, 235, 268, 300, 332, 365, 397, 429, 462, 494, 526, 559, 591, 623, 656, 688, 720, 753, 785, 817, 850, 882, 914, 947, 979, 1011,
             1044, 1076, 1108, 1141, 1173, 1205, 1238, 1270, 1302, 1335, 1367, 1399, 1432, 1464, 1496, 1529, 1561, 1593, 1626, 1658, 1691, 1723, 1755, 1788]
    hit2 = 2
    data3 = [0, 1014, 1176, 1338, 1499, 1661, 1823, 1985, 2146, 2308, 2470, 2631, 2793, 2955, 3116, 3278, 3440, 3602, 3763, 3925, 4087, 4248, 4410, 4572, 4733,
             4895, 5057, 5219, 5380, 5542, 5704, 5865, 6027, 6189, 6350, 6512, 6674, 6836, 6997, 7159, 7321, 7482, 7644, 7806, 7967, 8129, 8291, 8453, 8614, 8776, 8938]
    hit3 = 1

    六道 = False

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.07 + 0.005 * self.等级, 5)

    def 等效CD(self, **argv):
        return 1.0


class 技能17(主动技能):
    名称 = '火遁·冥炎业火阵'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 4215, 5194, 6171, 7150, 8127, 9107, 10083, 11061, 12038, 13017, 13993, 14973, 15951, 16928, 17905, 18883, 19862, 20840, 21817, 22796, 23773, 24750, 25731, 26706, 27684,
             28661, 29640, 30618, 31596, 32573, 33550, 34527, 35507, 36484, 37463, 38440, 39420, 40396, 41374, 42351, 43329, 44307, 45284, 46263, 47240, 48219, 49196, 50174, 51152, 52130]
    hit0 = 1
    data1 = [0, 5741, 7069, 8403, 9733, 11066, 12395, 13728, 15059, 16389, 17721, 19051, 20383, 21714, 23045, 24376, 25709, 27038, 28369, 29700, 31032, 32364, 33693, 35026, 36357, 37687,
             39019, 40350, 41681, 43013, 44345, 45675, 47007, 48338, 49668, 51001, 52330, 53663, 54994, 56326, 57656, 58987, 60319, 61650, 62981, 64312, 65643, 66974, 68306, 69637, 70968]
    hit1 = 1
    data2 = [0, 1186, 1461, 1737, 2013, 2286, 2562, 2838, 3113, 3389, 3662, 3937, 4213, 4489, 4765, 5040, 5314, 5589, 5866, 6141, 6416, 6691, 6966, 7241, 7518, 7792, 8067,
             8343, 8618, 8894, 9169, 9443, 9719, 9995, 10269, 10545, 10819, 11095, 11371, 11646, 11920, 12196, 12471, 12747, 13022, 13297, 13573, 13848, 14123, 14397, 14673]
    hit2 = 1
    data3 = [0, 8148, 10041, 11929, 13819, 15708, 17600, 19490, 21379, 23269, 25160, 27051, 28938, 30830, 32719, 34608, 36498, 38389, 40280, 42168, 44060, 45948, 47839, 49727, 51619,
             53507, 55397, 57289, 59178, 61067, 62957, 64849, 66737, 68628, 70519, 72409, 74297, 76186, 78077, 79966, 81857, 83747, 85638, 87527, 89417, 91307, 93196, 95086, 96976, 98867, 100756]
    hit3 = 1
    data4 = [0, 9566, 11786, 14006, 16222, 18441, 20661, 22880, 25097, 27315, 29535, 31755, 33970, 36190, 38410, 40627, 42845, 45066, 47284, 49501, 51721, 53939, 56158, 58375, 60595, 62814,
             65034, 67251, 69469, 71689, 73906, 76126, 78345, 80565, 82781, 85001, 87219, 89438, 91656, 93874, 96095, 98314, 100532, 102751, 104971, 107188, 109407, 111626, 113844, 116063, 118282]
    hit4 = 1
    data5 = [0, 0, 0, 819, 950, 1080, 1211, 1339, 1469, 1601, 1730, 1859, 1987, 2120, 2250, 2378, 2507, 2638, 2768, 2899, 3028, 3159, 3289, 3417, 3548, 3676,
             3807, 3937, 4065, 4198, 4328, 4535, 4673, 4811, 4948, 5086, 5223, 5362, 5498, 5635, 5775, 5907, 6036, 6165, 6295, 6426, 6556, 6685, 6816, 6946, 7075]
    hit5 = 10

    灼伤转换 = [0, 1, 2, 3, 4, 5]

    CD = 145

    MP = [881, 7403]
    无色消耗 = 5

    def 等效百分比(self, **argv):
        return (1.1 if self.等级 >= 6 else 1.0)*super().等效百分比(**argv)


class 技能18(主动技能):
    名称 = '忍法：飞燕手里剑'
    所在等级 = 60
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 30

    MP = [400, 1120]
    无色消耗 = 1
    data0 = [0, 106, 119, 127, 139, 149, 160, 169, 183, 192, 202, 215, 225, 234, 245, 257, 266, 278, 290, 301, 310, 319, 334, 342, 353,
             363, 376, 384, 397, 408, 418, 427, 438, 448, 461, 471, 483, 494, 503, 515, 525, 536, 546, 558, 569, 579, 589, 600, 610, 622, 633]
    hit0 = 1
    data1 = [0, 133, 146, 160, 171, 185, 200, 213, 227, 239, 254, 266, 280, 294, 307, 319, 334, 347, 361, 376, 387, 400, 415, 427, 442,
             456, 469, 481, 496, 509, 523, 536, 547, 562, 575, 589, 602, 615, 629, 643, 657, 671, 684, 696, 708, 722, 736, 751, 762, 778, 792]
    hit1 = 3
    data2 = [0, 75, 81, 91, 98, 106, 112, 120, 130, 138, 144, 153, 160, 169, 177, 183, 192, 198, 208, 215, 219, 229, 235, 245, 254,
             259, 266, 274, 281, 290, 297, 306, 312, 321, 330, 337, 345, 352, 361, 369, 376, 382, 390, 399, 407, 412, 419, 427, 438, 445, 450]
    hit2 = 15
    data3 = [0, 153, 167, 183, 198, 213, 229, 245, 257, 274, 290, 306, 319, 335, 352, 366, 382, 398, 412, 427, 443, 459, 474, 488, 505,
             520, 536, 551, 566, 583, 597, 611, 627, 643, 657, 672, 689, 705, 719, 735, 751, 767, 782, 797, 811, 826, 843, 857, 872, 888, 904]
    hit3 = 15
    data4 = [0, 531, 583, 637, 691, 746, 798, 852, 906, 960, 1011, 1068, 1120, 1175, 1226, 1282, 1336, 1388, 1444, 1497, 1550, 1605, 1658, 1713, 1764, 1818,
             1873, 1926, 1979, 2035, 2087, 2142, 2195, 2250, 2303, 2356, 2411, 2463, 2516, 2570, 2625, 2679, 2731, 2787, 2839, 2893, 2945, 3002, 3054, 3107, 3161]
    hit4 = 1
    data5 = [0, 442, 487, 533, 575, 622, 665, 708, 754, 799, 843, 888, 935, 979, 1024, 1070, 1114, 1159, 1201, 1246, 1290, 1336, 1382, 1425, 1471, 1515,
             1560, 1607, 1651, 1696, 1742, 1785, 1827, 1873, 1918, 1961, 2009, 2052, 2098, 2143, 2187, 2232, 2279, 2322, 2367, 2412, 2455, 2500, 2545, 2588, 2634]
    hit5 = 10
    data6 = [0, 618, 680, 746, 807, 869, 931, 993, 1056, 1119, 1182, 1245, 1307, 1370, 1434, 1496, 1559, 1622, 1684, 1746, 1808, 1872, 1934, 1998, 2059, 2122,
             2183, 2249, 2310, 2375, 2435, 2499, 2561, 2625, 2687, 2748, 2811, 2872, 2938, 2999, 3063, 3124, 3188, 3250, 3314, 3376, 3439, 3499, 3564, 3625, 3689]
    hit6 = 10

    CD = 30
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    六道 = False

    形态 = ["满", "空中"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "满":
            self.hit0 = 1
            self.hit1 = 3
            self.hit2 = 15
            self.hit3 = 15
            self.hit4 = 1
            self.hit5 = 10
            self.hit6 = 10
        if 形态 == "空中":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
            self.hit5 = 15
            self.hit6 = 15

    def 装备护石(self, char):
        self.倍率 *= 1.16


class 技能19(主动技能):
    名称 = '火遁·风魔手里剑'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 308, 337, 370, 400, 432, 462, 494, 524, 557, 587, 617, 649, 680, 711, 743, 774, 804, 837, 867, 900, 929, 961, 992, 1024, 1053, 1086,
             1116, 1148, 1179, 1211, 1240, 1273, 1304, 1336, 1367, 1397, 1429, 1460, 1491, 1521, 1553, 1583, 1616, 1646, 1677, 1708, 1740, 1771, 1803, 1833]
    hit0 = 15
    data1 = [0, 690, 760, 832, 901, 971, 1042, 1111, 1181, 1252, 1321, 1392, 1462, 1531, 1602, 1673, 1743, 1811, 1883, 1953, 2022, 2094, 2163, 2232, 2303, 2374,
             2442, 2513, 2584, 2654, 2724, 2793, 2864, 2934, 3004, 3075, 3144, 3214, 3285, 3355, 3425, 3494, 3566, 3635, 3705, 3777, 3846, 3915, 3986, 4056, 4127]
    hit1 = 10
    data2 = [0, 11519, 12686, 13856, 15024, 16193, 17362, 18530, 19698, 20868, 22035, 23204, 24374, 25542, 26711, 27878, 29047, 30216, 31386, 32553, 33722, 34892, 36060, 37227, 38396,
             39565, 40734, 41902, 43071, 44240, 45408, 46576, 47745, 48914, 50083, 51252, 52420, 53588, 54756, 55926, 57094, 58262, 59432, 60601, 61767, 62937, 64106, 65274, 66443, 67612, 68780]
    hit2 = 1
    data3 = [0, 308, 337, 370, 400, 432, 462, 494, 524, 557, 587, 617, 649, 680, 711, 743, 774, 804, 837, 867, 900, 929, 961, 992, 1024, 1053, 1086,
             1116, 1148, 1179, 1211, 1240, 1273, 1304, 1336, 1367, 1397, 1429, 1460, 1491, 1521, 1553, 1583, 1616, 1646, 1677, 1708, 1740, 1771, 1803, 1833]
    hit3 = 0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    CD = 50

    MP = [800, 1680]
    无色消耗 = 2

    def 装备护石(self, char):
        self.hit0 = 0
        self.hit1 = 20
        self.power2 = 1.3
        # 灼伤 仅佩戴护石时有效，选用data1的数据;为data1的6%
        self.灼伤转换 = [1]
        self.灼伤倍率 = 0.06


class 技能20(主动技能):
    名称 = '八岐大蛇'
    备注 = '(者皆阵结印)'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 3103, 3295, 3488, 3680, 3871, 4062, 4255, 4448, 4640, 4832, 5023, 5215, 5407, 5601, 5791, 5985, 6176, 6368, 6560, 6753, 6944, 7136, 7328, 7521, 7713,
             7906, 8097, 8289, 8481, 8673, 8864, 9056, 9250, 9440, 9633, 9826, 10017, 10209, 10402, 10593, 10784, 10978, 11169, 11362, 11555, 11746, 11937, 12130, 12323, 12514]
    hit0 = 1
    data1 = [0, 3211, 3505, 3803, 4097, 4393, 4687, 4983, 5279, 5575, 5870, 6165, 6460, 6757, 7052, 7348, 7643, 7938, 8236, 8531, 8824, 9122, 9415, 9713, 10008, 10303, 10597,
             10893, 11190, 11485, 11781, 12074, 12371, 12667, 12963, 13257, 13554, 13848, 14145, 14440, 14736, 15030, 15327, 15622, 15918, 16213, 16508, 16803, 17100, 17395, 17690]
    hit1 = 10
    data2 = [0, 501, 579, 658, 733, 810, 888, 964, 1040, 1117, 1194, 1272, 1347, 1425, 1500, 1579, 1655, 1731, 1809, 1887, 1961, 2040, 2115, 2192, 2271, 2346,
             2424, 2501, 2577, 2654, 2732, 2807, 2885, 2961, 3038, 3114, 3192, 3269, 3344, 3422, 3500, 3574, 3653, 3729, 3806, 3884, 3959, 4037, 4115, 4190, 4267]
    hit2 = 21

    是否有护石 = 1
    CD = 43

    MP = [600, 4500]
    无色消耗 = 3

    def 装备护石(self, char):
        self.hit0 = 1
        self.hit1 = 11
        self.power1 = 1.74
        self.hit2 = 0


class 技能21(主动技能):
    名称 = '八尺琼勾玉'
    备注 = '来回两次伤害'
    是否主动 = 0
    所在等级 = 75
    等级上限 = 1
    学习间隔 = 1
    等级精通 = 1

    data0 = [int(i) for i in [0, 740]]
    hit0 = 2
    data1 = [int(i) for i in [0, 820]]
    hit1 = 2
    data2 = [int(i) for i in [0, 850]]
    hit2 = 2
    CD = 3.0

    六道 = False

    def 等效CD(self, **argv):
        return 3.0


class 技能22(被动技能):
    名称 = '八咫镜'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.08 + 0.02 * self.等级, 5)


class 技能23(主动技能):
    名称 = '天照'
    备注 = '(者皆阵结印)'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 4134, 4552, 4973, 5392, 5813, 6232, 6650, 7070, 7489, 7910, 8329, 8747, 9167, 9588, 10007, 10425, 10846, 11263, 11685, 12104, 12522, 12942, 13362, 13783, 14200,
             14620, 15039, 15459, 15877, 16297, 16717, 17135, 17557, 17976, 18395, 18814, 19234, 19652, 20072, 20491, 20912, 21332, 21750, 22170, 22589, 23008, 23427, 23848, 24267, 24687]
    hit0 = 2
    data1 = [0, 4400, 4848, 5294, 5740, 6188, 6634, 7081, 7528, 7973, 8421, 8866, 9313, 9760, 10206, 10653, 11099, 11545, 11994, 12438, 12885, 13331, 13779, 14226, 14670, 15116,
             15564, 16011, 16458, 16904, 17350, 17798, 18244, 18692, 19136, 19584, 20030, 20477, 20921, 21370, 21816, 22261, 22709, 23154, 23602, 24048, 24494, 24941, 25387, 25833, 26280]
    hit1 = 8

    倍率 = 1.06  # 者皆阵倍率
    # 攻击倍率 = 1.03  # 临兵斗倍率
    是否有护石 = 1
    CD = 51

    MP = [800, 6000]
    无色消耗 = 5

    def 装备护石(self, char):
        self.power1 = 1.33
        self.CDR *= 0.85


class 技能24(主动技能):
    名称 = '火炎灼空：草雉剑'
    所在等级 = 85
    等级上限 = 40
    学习间隔 = 5
    等级精通 = 30

    data0 = [0, 2712, 2825, 2940, 3047, 3165, 3276, 3389, 3500, 3615, 3726, 3833, 3948, 4062, 4169, 4290, 4401, 4506, 4625, 4740, 4847, 4955, 5076, 5184, 5297,
             5413, 5520, 5630, 5751, 5856, 5970, 6081, 6198, 6306, 6420, 6534, 6648, 6759, 6870, 6981, 7094, 7207, 7320, 7431, 7545, 7660, 7770, 7881, 7998, 8110, 8220]
    hit0 = 0
    data1 = [0, 2722, 2829, 2936, 3037, 3149, 3253, 3360, 3464, 3572, 3676, 3777, 3884, 3993, 4094, 4207, 4311, 4410, 4524, 4631, 4732, 4834, 4947, 5048, 5155,
             5263, 5364, 5468, 5582, 5681, 5788, 5892, 6002, 6104, 6211, 6319, 6426, 6531, 6635, 6739, 6846, 6951, 7059, 7163, 7270, 7378, 7482, 7586, 7696, 7802, 7906]
    hit1 = 0
    data2 = [0, 2790, 2912, 3036, 3153, 3280, 3399, 3523, 3643, 3767, 3886, 4003, 4126, 4249, 4366, 4496, 4616, 4730, 4859, 4983, 5098, 5216, 5345, 5463, 5585,
             5709, 5826, 5947, 6075, 6189, 6312, 6432, 6558, 6676, 6799, 6922, 7045, 7166, 7286, 7405, 7528, 7649, 7771, 7892, 8015, 8139, 8258, 8379, 8505, 8626, 8744]
    hit2 = 0
    data3 = [0, 5497, 6773, 8049, 9322, 10597, 11872, 13146, 14421, 15696, 16969, 18244, 19521, 20796, 22070, 23345, 24620, 25893, 27168, 28445, 29720, 30994, 32270, 33545, 34819, 36093,
             37369, 38643, 39918, 41193, 42467, 43742, 45017, 46292, 47566, 48842, 50117, 51391, 52666, 53940, 55214, 56489, 57766, 59040, 60315, 61590, 62865, 64138, 65413, 66688, 67962]
    hit3 = 1
    data4 = [0, 27855, 34314, 40771, 47232, 53690, 60149, 66607, 73068, 79525, 85984, 92443, 98902, 105362, 111821, 118280, 124738, 131198, 137656, 144115, 150574, 157032, 163491, 169952, 176409, 182870,
             189327, 195787, 202245, 208703, 215164, 221622, 228083, 234540, 241001, 247458, 253917, 260376, 266834, 273294, 279753, 286210, 292670, 299131, 305589, 312048, 318507, 324966, 331424, 337884, 344341]
    hit4 = 3

    灼伤倍率 = 0.1
    灼伤转换 = [0, 1, 2]

    CD = 180

    六道 = False

    形态 = ["平x", "空中", "终结"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "终结":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 1
            self.hit4 = 3
        if 形态 == "平x":
            self.hit0 = 1
            self.hit1 = 1
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0
        if 形态 == "空中":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 2
            self.hit3 = 0
            self.hit4 = 0


class 技能25(主动技能):
    名称 = '勾玉之火·镰鼬'
    备注 = '(者皆阵结印)'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    CD = 60 * 0.6
    MP = [960, 2000]
    无色消耗 = 7
    data0 = [0, 5658, 6232, 6806, 7378, 7952, 8528, 9101, 9675, 10249, 10823, 11397, 11972, 12546, 13120, 13693, 14268, 14840, 15415, 15990, 16563, 17137, 17711, 18285, 18860, 19434,
             20008, 20582, 21155, 21728, 22305, 22877, 23451, 24025, 24599, 25172, 25747, 26322, 26896, 27469, 28044, 28617, 29190, 29765, 30339, 30912, 31487, 32060, 32634, 33209, 33784]
    hit0 = 5
    data1 = [0, 66014, 72709, 79404, 86081, 92775, 99488, 106184, 112879, 119574, 126269, 132964, 139677, 146372, 153067, 159762, 166457, 173134, 179847, 186542, 193236, 199932, 206627, 213322, 220035, 226729,
             233425, 240120, 246815, 253492, 260223, 266900, 273594, 280290, 286985, 293679, 300374, 307088, 313782, 320478, 327173, 333868, 340544, 347258, 353952, 360646, 367342, 374038, 380732, 387445, 394140]
    hit1 = 1

    # def 等效CD(self, **argv):
    #     # 武器类型 输出类型 额外CDR 手搓收益 恢复
    #     武器类型 = argv.get('武器类型', '')
    #     输出类型 = argv.get('输出类型', '')
    #     额外CDR = argv.get('额外CDR', 1.0)
    #     # 手搓收益 = argv.get('手搓收益', 1.0)
    #     面板显示 = argv.get('面板显示', False)
    #     额外恢复 = argv.get('额外恢复', 0)

    #     cdr = self.手搓CD()

    #     return round(max(self.CD * self.CDR * 额外CDR / ((self.恢复 + 额外恢复) if not 面板显示 else 1) * (self.武器CD系数(武器类型, 输出类型) - (cdr if not 面板显示 else 0)), self.CD * 0.3)*self.CDR_O
    #                  - ((self.CD * self.CDR * 额外CDR * 0.4 * (self.武器CD系数(武器类型, 输出类型) - (cdr if not 面板显示 else 0))) if not 面板显示 else 0), 1)


class 技能26(被动技能):
    名称 = '三元刹'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能27(主动技能):
    名称 = '火源限界·八咫乌'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    CD = 290
    MP = [4028, 8056]
    无色消耗 = 15

    data0 = [0, 7245, 8925, 10604, 12284, 13964, 15643, 17323, 19004, 20683, 22363, 24043, 25723, 27402, 29082, 30763, 32441, 34122, 35802, 37481, 39162, 40841, 42522, 44200, 45881,
             47560, 49240, 50921, 52600, 54281, 55959, 57640, 59319, 60999, 62679, 64359, 66040, 67718, 69399, 71079, 72758, 74438, 76118, 77799, 79477, 81158, 82838, 84517, 86197, 87877, 89556]
    hit0 = 12
    data1 = [0, 9315, 11475, 13634, 15794, 17953, 20113, 22273, 24433, 26593, 28752, 30912, 33071, 35232, 37391, 39551, 41712, 43871, 46031, 48191, 50351, 52510, 54670, 56830, 58989, 61150,
             63309, 65469, 67628, 69788, 71949, 74108, 76268, 78427, 80587, 82746, 84908, 87068, 89227, 91387, 93546, 95706, 97867, 100026, 102186, 104345, 106505, 108664, 110825, 112985, 115144]
    hit1 = 14
    data2 = [0, 217330, 267726, 318121, 368516, 418913, 469307, 519702, 570098, 620494, 670888, 721284, 771679, 822076, 872470, 922865, 973262, 1023656, 1074051, 1124447, 1174843, 1225237, 1275633, 1326028, 1376425, 1426819,
             1477214, 1527611, 1578006, 1628401, 1678796, 1729192, 1779587, 1829982, 1880378, 1930774, 1981168, 2031564, 2081960, 2132355, 2182750, 2233145, 2283541, 2333936, 2384331, 2434728, 2485123, 2535517, 2585913, 2636309, 2686705]
    hit2 = 1


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'kunoichi'
        self.名称 = '隐夜·忍者'
        self.角色 = '暗夜使者'

        self.职业 = '忍者'
        self.武器选项 = ['苦无']
        self.输出类型选项 = ['魔法百分比']
        self.防具精通属性 = ['智力']
        self.类型 = '魔法百分比'
        self.武器类型 = '苦无'
        self.防具类型 = '布甲'

        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 2.04

        super().__init__(equVersion)

    def set_individuation(self, info):
        info['char_optiopns'] = []
        for skill in self.技能栏:
            if skill.是否有伤害 == 1 and getattr(skill, "六道", False):
                info['char_optiopns'].append({
                    "name": "["+skill.名称+"]"+"六道",
                    "option": ["跟随六道次数"]+[i for i in range(0, 16)]
                })
        # 设置选项example
        # name为名称，option内为选项
        # 其他地方调用的时候，调用self.individuation
        # 比如取第二个选项的选择结果,函数传入第几个-1,返回选择的index,比如选择了选项2,返回1
        # self.get_individuation(1)

    def 伤害计算(self):
        data = super().伤害计算()
        六道 = data['skills'].get("忍法：六道轮回", None)
        if 六道 == None:
            return data
        六道技能 = []
        六道倍率 = self.get_skill_by_name("忍法：残影术").六道倍率()
        for skill in self.技能栏:
            if skill.是否有伤害 == 1 and getattr(skill, "六道", False):
                六道技能.append(skill.名称)
        for index in range(0, len(六道技能)):
            skill = 六道技能[index]
            temp = data['skills'].get(skill, None)
            if temp != None:
                count = self.get_individuation(index)
                六道['damage'] += temp['damage']/temp['count'] * \
                    min(六道['count'] if count == 0 else (
                        count-1), temp['count'])*0.8*六道倍率
                pass
        data['total_data'] += 六道['damage']
        dps = 0
        for temp in data['skills']:
            skill = data['skills'][temp]
            try:
                dps += (skill['damage']/skill['count'])/skill['cd']
            except:
                pass
        data['dps'] = dps
        return data
